package com.menqui.localizame.Gps;

import java.text.DecimalFormat;
import java.util.Date;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.widget.TextView;

import com.menqui.localizame.R;

public class GpsPantalla {
	private final String LOG_TAG = getClass().toString();

	private LocationListener onLocationChange;

	private TextView latitud = null;
	private TextView estado = null;
	private TextView longitud = null;
	private TextView altitud = null;
	private TextView rumbo = null;
	private TextView velocidad = null;
	private TextView precision = null;
	private TextView tiempo = null;
	private TextView tipoPosicionamiento = null;
	private TextView etiquetaCabecera = null;
	private Context context = null;
	private DecimalFormat formateador = null;

	public GpsPantalla(Activity activity, Context context) {
		this.context = context;
		latitud = (TextView) activity.findViewById(R.id.latitud);
		longitud = (TextView) activity.findViewById(R.id.longitud);
		tipoPosicionamiento = (TextView) activity.findViewById(R.id.sistema);
		etiquetaCabecera = (TextView) activity.findViewById(R.id.etiquetaCabecera);
		estado = (TextView) activity.findViewById(R.id.estado);
		altitud = (TextView) activity.findViewById(R.id.altitud);
		rumbo = (TextView) activity.findViewById(R.id.rumbo);
		velocidad = (TextView) activity.findViewById(R.id.velocidad);
		precision = (TextView) activity.findViewById(R.id.precision);
		tiempo = (TextView) activity.findViewById(R.id.tiempo);
		inicializarCampos();

		formateador = new DecimalFormat ("#########.###");
	}

	public void setLocalizacion(Location location) {
		if (location != null){
			setText(tipoPosicionamiento, R.string.sistema, location.getProvider());
			setText(latitud, R.string.latitud, formateador.format(location.getLatitude()));
			setText(longitud, R.string.longitud, formateador.format(location.getLongitude()));
			setText(altitud, R.string.altitud, formateador.format(location.getAltitude()));
			setText(rumbo, R.string.rumbo, formateador.format(location.getBearing()));
			setText(velocidad, R.string.velocidad, formateador.format(location.getSpeed()));
			setText(precision, R.string.precision, formateador.format(location.getAccuracy()));
	
			Date fecha = new Date(location.getTime());
	
			setText(tiempo, R.string.tiempo, fecha.toGMTString());
		}
	}

	public void setEstado(int idString) {
		setText(estado, R.string.estado, context.getString(idString));
	}
	public void setEtiqueta(String cadena) {
		etiquetaCabecera.setText(cadena);
	}

	private void inicializarCampos() {
		setText(tipoPosicionamiento, R.string.sistema, "");
		setText(latitud, R.string.latitud, "");
		setText(longitud, R.string.longitud, "");
		setText(altitud, R.string.altitud, "");
		setText(rumbo, R.string.rumbo, "");
		setText(velocidad, R.string.velocidad, "");
		setText(precision, R.string.precision, "");
		setText(tiempo, R.string.tiempo, "");

		setEstado(R.string.estadoDesactivado);

	}
	private void setText(TextView textView, int texto, Double valor) {
		String cadena = "";
		if (valor != null) {
			cadena = String.valueOf(valor);
		}
		setText(textView, texto, cadena);
	}

	private void setText(TextView textView, int texto, Float valor) {
		String cadena = "";
		if (valor != null) {
			cadena = String.valueOf(valor);
		}
		setText(textView, texto, cadena);
	}

	private void setText(TextView textView, int texto, String valor) {
		textView.setText(context.getString(texto) + ": " + valor);
	}
}
